//
// Created by Administrator on 2024/6/18.
//

#ifndef SQLIST_H
#define SQLIST_H

#include "option_config.h"
//线性表-顺序表: 线性表中的所有元素按照其逻辑顺序依次存储到指定位置开始的一块连续的存储区域
//特点: 在顺序表中，各元素的逻辑顺序跟物理顺序一致，第i项就存在第i个位置。
//对顺序表中的所有元素，既可以顺序访问，也可以随机访问
#define SEQLiST_INIT_SIZE 8 //初始化大小
#define INC_SIZE 3
#define len(p) sizeof(p)/sizeof(p[0]) //求数组长度

//typedef char bool;


//////////////////////////////操作///////////////////////////////
//初始化
void SeqInitList(SeqList *list);

//扩充(容量不足)
bool seq_inc(SeqList *list);

//尾插入法
void seq_push_back(SeqList *list, ElemType x);

//头插入法
void seq_push_front(SeqList *list, ElemType x);

//打印数据
void seq_show_list(SeqList *list);

//尾删除
void seq_pop_back(SeqList *list);

//头删除
void seq_pop_front(SeqList *list);

//按位置插入数据
void seq_insert_pos(SeqList *list, int pos, ElemType x);

//查找数据
int seq_find(SeqList *list, ElemType key);

//求长度
int seq_length(SeqList *list);

//按位置删除数据
void seq_delete_pos(SeqList *list, int pos);

//按值删除数据
void seq_delete_val(SeqList *list, ElemType key);

//顺序 order
void seq_sort(SeqList *list);

//逆序 Reverse order
void seq_resver(SeqList *list);

//清空
void seq_destroy(SeqList *list);

//合并(merge)
void seq_merge(SeqList *lt, SeqList *la, SeqList *lb);


#endif //SQLIST_H
